package com.yanqu.road.server.manager.cross.battle.enums;

import com.yanqu.road.server.manager.cross.battle.HuaShiGangMgr;
import com.yanqu.road.server.manager.cross.battle.HuaShiGangMode;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * @Author wpj
 * @Date 2020/9/28
 */
public enum HuaShiGangBuildMode {
    ModeA222_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA222_2 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA222_3 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

//    ModeA222_4 {
//        @Override
//        HuaShiGangMode build() {
//            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
//            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
//            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(7));
//
//            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
//            huaShiGangMode.setPoint(0, 2);
//            huaShiGangMode.setPoint(1, 2);
//            return huaShiGangMode;
//        }
//    },

//    ModeA222_5 {
//        @Override
//        HuaShiGangMode build() {
//            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
//            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
//            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(8));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
//            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
//            huaShiGangMode.setPoint(0, 2);
//            huaShiGangMode.setPoint(1, 2);
//            return huaShiGangMode;
//        }
//    },

    ModeA223_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA223_2 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));

            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA223_3 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA232_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA232_2 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA232_3 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA232_4 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA232_5 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },


    ModeA322_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA322_2 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA322_3 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA332_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA332_2 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },
    ModeA332_3 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },
    ModeA332_4 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },
    ModeA332_5 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },
    ModeA332_6 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },
    ModeA332_7 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },
    ModeA332_8 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },
    ModeA332_9 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            return huaShiGangMode;
        }
    },

    ModeA323_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },
//    ModeA323_2 {
//        @Override
//        HuaShiGangMode build() {
//            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
//            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
//            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
//            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));
//
//            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));
//
//            huaShiGangMode.setPoint(0, 2);
//            huaShiGangMode.setPoint(1, 2);
//            huaShiGangMode.setPoint(2, 2);
//            return huaShiGangMode;
//        }
//    },
//    ModeA323_3 {
//        @Override
//        HuaShiGangMode build() {
//            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
//            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
//            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
//            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(9));
//
//            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
//
//            huaShiGangMode.setPoint(0, 2);
//            huaShiGangMode.setPoint(1, 2);
//            huaShiGangMode.setPoint(2, 2);
//            return huaShiGangMode;
//        }
//    },
    ModeA323_4 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },
    ModeA323_5 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA233_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA233_2 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA233_3 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA233_4 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA233_5 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA233_6 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA233_7 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_1 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

//    ModeA333_2 {
//        @Override
//        HuaShiGangMode build() {
//            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
//            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
//            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(9));
//            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));
//
//            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
//            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));
//
//            huaShiGangMode.setPoint(0, 2);
//            huaShiGangMode.setPoint(1, 2);
//            huaShiGangMode.setPoint(2, 2);
//            return huaShiGangMode;
//        }
//    },

//    ModeA333_3 {
//        @Override
//        HuaShiGangMode build() {
//            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
//            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
//            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
//            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
//            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));
//
//            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
//            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));
//            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));
//
//            huaShiGangMode.setPoint(0, 2);
//            huaShiGangMode.setPoint(1, 2);
//            huaShiGangMode.setPoint(2, 2);
//            return huaShiGangMode;
//        }
//    },

    ModeA333_4 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_5 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_6 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_7 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_8 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_9 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(9));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_10 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },

    ModeA333_11 {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.A);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(4));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(5));
            huaShiGangMode.setPointAndAddNextPoint(1, 0, pointMap.get(6));
            huaShiGangMode.setPointAndAddNextPoint(2, 0, pointMap.get(6));

            huaShiGangMode.setPointAndAddNextPoint(0, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(7));
            huaShiGangMode.setPointAndAddNextPoint(1, 1, pointMap.get(8));
            huaShiGangMode.setPointAndAddNextPoint(2, 1, pointMap.get(9));

            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPoint(1, 2);
            huaShiGangMode.setPoint(2, 2);
            return huaShiGangMode;
        }
    },


    ModeB {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.B);
            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(7));
            return huaShiGangMode;
        }
    },

    ModeC {
        @Override
        HuaShiGangMode build() {
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.C);
            huaShiGangMode.setPoint(0, 0);
            return huaShiGangMode;
        }
    },

    ModeD {
        @Override
        HuaShiGangMode build() {
            Map<Integer, Point> pointMap = HuaShiGangMgr.getPointMap();
            HuaShiGangMode huaShiGangMode = new HuaShiGangMode(HuaShiGangMgr.HuaShiGangModeLine, eHuaShiGangModeType.D);
            huaShiGangMode.setPoint(0, 2);
            huaShiGangMode.setPointAndAddNextPoint(0, 0, pointMap.get(7));
            return huaShiGangMode;
        }
    },

    ;

    abstract HuaShiGangMode build();

    /**
     * 获取随机的A模块
     *
     * @return
     */
    public static HuaShiGangMode getRandomAMode() {
        List<HuaShiGangMode> list = new ArrayList<>();
        for (HuaShiGangBuildMode huaShiGangBuildMode : HuaShiGangBuildMode.values()) {
            HuaShiGangMode huaShiGangMode = huaShiGangBuildMode.build();
            if (huaShiGangMode.getModeType() == eHuaShiGangModeType.A) {
                huaShiGangMode.setModeId(huaShiGangBuildMode);
                list.add(huaShiGangMode);
            }
        }
        return list.get(new Random().nextInt(list.size()));
    }

    /**
     * 获取B模块
     *
     * @return
     */
    public static HuaShiGangMode getBMode() {
        for (HuaShiGangBuildMode huaShiGangBuildMode : HuaShiGangBuildMode.values()) {
            HuaShiGangMode huaShiGangMode = huaShiGangBuildMode.build();
            if (huaShiGangMode.getModeType() == eHuaShiGangModeType.B) {
                huaShiGangMode.setModeId(huaShiGangBuildMode);
                return huaShiGangMode;
            }
        }
        return null;
    }

    /**
     * 获取C模块
     *
     * @return
     */
    public static HuaShiGangMode getCMode() {
        for (HuaShiGangBuildMode huaShiGangBuildMode : HuaShiGangBuildMode.values()) {
            HuaShiGangMode huaShiGangMode = huaShiGangBuildMode.build();
            if (huaShiGangMode.getModeType() == eHuaShiGangModeType.C) {
                huaShiGangMode.setModeId(huaShiGangBuildMode);
                return huaShiGangMode;
            }
        }
        return null;
    }

    /**
     * 获取中间boss模块
     *
     * @return
     */
    public static HuaShiGangMode getDMode() {
        for (HuaShiGangBuildMode huaShiGangBuildMode : HuaShiGangBuildMode.values()) {
            HuaShiGangMode huaShiGangMode = huaShiGangBuildMode.build();
            if (huaShiGangMode.getModeType() == eHuaShiGangModeType.D) {
                huaShiGangMode.setModeId(huaShiGangBuildMode);
                return huaShiGangMode;
            }
        }
        return null;
    }
}
